import Vue from 'vue'
import VueI18n from 'vue-i18n' // 引入vue-i18n多语言包


// 引入element ui自带语言包
import ElementUILocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en'
// let  enLocale = require('element-ui/lib/locale/lang/en')
import zhCNLocale from 'element-ui/lib/locale/lang/zh-CN'
import zhTWLocale from 'element-ui/lib/locale/lang/zh-TW'
// let  zhTWLocale = require('element-ui/lib/locale/lang/zh-TW')

Vue.use(VueI18n) // vue使用vue-i18n

const DEFAULT_LANG = 'zh-CN' // 默认语言
const LOCALE_KEY = 'Language' // localStorage来存放的key


const languages = {
    "zh-CN": "简体中文",
    "en": "English",
    "zh-TW": "繁体中文"
}



/**
 * vue-i18n 配置
 */
const locales = { // 语言包
    'zh-CN': require('./lang/zh-CN.json'),
    'en': require('./lang/en.json'),
    'zh-TW': require('./lang/zh-TW.json')
}

// __import = file => () => import('@/views/' + file + '.vue')

console.log('locales', locales)
const i18n = new VueI18n({  // 创建带有选项的 VueI18n 实例
    locale: currLanguage(),   // 语言标识，默认语言
    messages: locales   // 语言包，上边创建的json文件
})

/**
 * UI element-ui 配置
 */
const UIlocales = {
    'zh-CN': zhCNLocale,
    'en': enLocale,
    'zh-TW': zhTWLocale
}

console.log('UIlocales', UIlocales)

// 通过判断lang语言标志符来return先对应的语言
const setUIlocales = lang => {
    // switch (lang) {
    //     case 'zh-CN': return UIlocales['zh-CN']
    //     case 'en': return UIlocales.en
    //     case 'zh-TW': return UIlocales['zh-TW']
    // }
    return UIlocales[lang]
}

/**
 * 当前语言
 */
export function currLanguage() {
    return window.localStorage.getItem(LOCALE_KEY) || DEFAULT_LANG
}

/**
 * 切换语言
 * @param {string} lang 
 */
export function changeLanguage(lang) {
    if (lang == undefined) {
        lang = window.localStorage.getItem(LOCALE_KEY)
        if (locales[lang] == undefined) {
            lang = DEFAULT_LANG
        }
    }
    window.localStorage.setItem(LOCALE_KEY, lang)
    Vue.config.lang = lang
    i18n.locale = lang
    ElementUILocale.use(setUIlocales(lang))     // element ui 切换语言
    // locale.i18n((key, value) => i18n.t(key, value)); //为了实现element插件的多语言切换
}

changeLanguage()

export default i18n




